File:  of Disk: Disks/Working/Build-11-03-07
(Source file text) 

F BLOCKS IN ONE GO = BATCH
        DCA CBLOCK	/START WITH BLOCK 0
        DCA CHKSM

DUMPLP, CLA
        TAD RDSIZE
        TAD CBLOCK	/(TOTAL - BATCH) - CURRENT
        CIA
        TAD NUMBLK      /MORE BLOCKS LEFT THAN BATCH?
        SMA             /NO, NUMBER OF BLOCKS LEFT
        CLA             /YES, ONLY BATCH SIZE
        TAD RDSIZE
        SNA             /ANY MORE BLOCKS?
        JMP DONE        /NO, DO FINISH STUFF
        DCA ARGSZ	/TO NUMBER OF BLOCKS REQUEST
        TAD CBLOCK	/TO CURRENT BLOCK TO START WITH
        DCA ARGBK
        TAD DRVSEL
        JMS I (DTA0
        0010		/READ STARTING IN FIELD 1
ARGSZ,  0
        0
ARGBK,  0
        JMP ERRRET	/SOME DUST ON THE TAPE?
        TAD (377        /ALL BLOCKS GOOD
        DCA READST
                        /Send data, each block starts with FF
        CLA CLL         / then 2 12 bit words in 3 bytes
        DCA LOC         / ERRRET DUPLICATES SOME OF THIS
        TAD ARGSZ
        CIA
        DCA BCNT        /SET UP COUNTER OF NUMBER OF BLOCKS XFERRED
        CDF 10		/START IN FIELD 1
OUTBL1, JMS I (OUTBLK      /SEND A BLOCK
        ISZ CBLOCK	/NEXT BLOCK
        ISZ BCNT        /BATCH XFERRED?
        JMP OUTBL1      /NO
        CDF 0
        JMP DUMPLP      /GO READ NEXT BATCH


DONE,   CLA             / Send FE and -checksum of all words
        TAD (376
        JMS I (PUN
        CLA CLL
        TAD CHKSM       / Send checksum in two bytes, low bits first
        CIA
        JMS I (PUN
        CLA CLL
        TAD CHKSM
        CIA
        RTR
        RTR
        RTR
        RTR
        AND C17
        JMS I (PUN
        CLA
        TAD DRVSEL
        JMS I (DTA0        / REWIND TAPE
        0010
        1
        0
        0
        NOP
        TAD ERRCN2      / Leave AC with # of errors
	JMP FINISH

ERRRET, CDF 10		/SEND GOOD BLOCKS READ WITH GOOD BLOCK FLAG
        CLA CLL		/THEN BAD WITH BAD BLOCK FLAG.
        DCA LOC
        TAD CBLOCK
        CIA
    	TAD BLOCK       /Get - number good blocks read
        CIA             /Last was bad
	SNA
	JMP FSTBAD	/First block is bad, no good to send
        DCA BCNT
        TAD (377
        DCA READST
OUTBL2, JMS I (OUTBLK      /Send good blocks
        ISZ CBLOCK
        ISZ BCNT
        JMP OUTBL2
FSTBAD,	TAD (375        /NOW SEND BAD BLOCK
        DCA READST
        JMS I (OUTBLK
        ISZ CBLOCK
        ISZ ERRCN2
        CDF 0
        JMP DUMPLP      /And read from here on

        PAGE
OUTBLK, 0               /Send a block of data out serial port
        CLA
        TAD WCOUNT
        DCA LEN		/COUNT FOR ONE BLOCK
        TAD READST      /Send good/bad flag
        JMS PUN
OUT,    CLA CLL
        TAD I LOC
        TAD CHKSM       / Keep checksum of all words sent
        DCA CHKSM
        TAD I LOC       / Send 2 words as 3 bytes
        CLL RTR		/ WvdM: Left 8 Bits first
        RTR		/ WvdM:
        JMS PUN
        CLA CLL
        TAD I LOC
        AND C17
	CLL RTL		/ WvdM: Low 4 Bits to high byte 2
	RTL		/ WvdM
        DCA TEMP
        ISZ LOC
        TAD LOC
        TAD CX200
        SZA CLA		/ARE WE AT OS/8 BOUNDARY?
        JMP STFLD3+1    /NOT AT END OF FIELD (DJG)
        DCA LOC		/OK, TO NEXT FIELD
        RDF             /
        TAD (6211	/BUILD CDF
        DCA STFLD3
STFLD3, NOP
	ISZ LEN		/END IF BUFFER?
	SKP		/NO
	JMP ENDBK	/YES
        TAD I LOC
        TAD CHKSM
        DCA CHKSM
        TAD I LOC
        CLL RTL
        RTL
        RAL		/ New: High 4 bits to low byte 2
        AND C17		/ (WvdM) was AND C360
        TAD TEMP
        JMS PUN
        CLA CLL
        TAD I LOC
        JMS PUN
        ISZ LOC
        TAD LOC
        TAD CX200
        SZA CLA		/ARE WE AT OS/8 BOUNDARY?
        JMP STFLD4+1    /NOT AT END OF FIELD (DJG)
        DCA LOC		/OK, TO NEXT FIELD
        RDF
        TAD (6211	/BUILD CDF
        DCA STFLD4
STFLD4, NOP
        ISZ LEN
        JMP OUT
        JMP I OUTBLK
ENDBK,	TAD TEMP	/SEND LAST PART OF WORD
	JMS PUN
	JMP I OUTBLK

PUN,    0               / Send byte out serial port
        PLS             / Punch for testing with emulator
/       TLS2            / Send out console
        CLA CLL
        TAD CBLOCK
        PSF
/       TSF2            /Wait until character sent
        JMP .-1
        CLA
        JMP I PUN

        $